#ifndef _COMMUNICATION_UTILS_H_
#define _COMMUNICATION_UTILS_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "cJSON.h"
#include "sys_log.h"
#include "threadpool.h"
#include "type.h"
// 数据结构
typedef struct jsonmessage
{
    enum Options O_type;     // 请求类型
    enum device_type D_type; // 设备类型
    char seforms[256];       // 信息流
} message;
/*
 * 功能：创建套接字
 * 参数：无
 * 返回值：套接字
*/
int getsock(void);
/*
 * 功能:发送消息
 * 参数：套接字，消息
 * 返回值：成功返回1，失败返回0
 */
int sendmessage(const int sock, message *msg);
/*
 * 功能：接收消息
 * 参数：套接字，消息
 * 返回值：成功返回1，失败返回0
 */
int recvmessage(const int sock, message *msg);
/*
 * 功能：发送错误信息
 * 参数：套接字，错误信息
 * 返回值：成功返回1，失败返回0
*/
int senderror(const int sock, const char *errmsg);
/*
 * 功能：发送结果信息
 * 参数：套接字，结果信息
 * 返回值：成功返回1，失败返回0
*/
int sendresult(const int sock, const char *result);
/*
 * 功能：发送警告信息
 * 参数：线程池，操作类型
 * 返回值：无
 */
void sendwarning(struct threadpool *pool,enum Options op);
/*
 * 功能：发送退出信息
 * 参数：套接字
 * 返回值：成功返回1，失败返回0
 */
int sendexit(int sock);
/*
 * 功能：发送数据
 * 参数：套接字，数据
 * 返回值：成功返回1，失败返回0
  */
int sendata(int sock, const char *data);

#endif
